package com.projectframe.base.service;

import java.util.Map;

public interface IPoiReportService {
	/**
	 * 依查詢條件產生報表xls, 並回傳給用戶.
	 * 
	 * @param queryVo 查詢資料, queryVo的parms(Map型別)須設定下列參數:<br/>
	 * key = "userId", value = 使用者ID(於報表上顯示)<br/>
	 * key = "searchCriterion", value = Object[] searchList 內容為查詢條件, 型別為SearchCriterionRMIVO<br/>
	 * SearchCriterionRMIVO須依查詢條件設定下列<br/>
	 * fieldName = 設定欄位名稱<br/>
	 * operator = 設定比較條件, 例如: =, >, <, like等<br/>
	 * value = 設定條件值
	 * @param reportFilePrefix 報表檔案的Prefix, UseCase編號_UseCase中文名稱
	 * @param excelTemplateFile excel模版檔
	 * @param startDataRow 設定每一個sheet資料開始寫入的row number, excel的第一個row為0.
	 * @param functionType 製表查詢的類型, 如新增流程的預覽, 資料維護的製表, 或產出資料檔等
	 * @return 回傳結果, ResultRMIVO的設定值如下:<br/>
	 * 成功: status = 0, result = 傳址的url<br/>
	 * 失敗: status = -1, msgDesc = 訊息碼, message = 訊息內容
	 */
	String reportProcess(Map<String, ?> params, String reportFilePrefix, String excelTemplateFile, int[] startDataRow, int functionType);
	
	/**
	 * 依查詢條件產生報表xls, 並回傳給用戶.
	 * 
	 * @param queryVo 查詢資料, queryVo的parms(Map型別)須設定下列參數:<br/>
	 * key = "userId", value = 使用者ID(於報表上顯示)<br/>
	 * key = "searchCriterion", value = Object[] searchList 內容為查詢條件, 型別為SearchCriterionRMIVO<br/>
	 * SearchCriterionRMIVO須依查詢條件設定下列<br/>
	 * fieldName = 設定欄位名稱<br/>
	 * operator = 設定比較條件, 例如: =, >, <, like等<br/>
	 * value = 設定條件值
	 * @param reportFilePrefix 報表檔案的Prefix, UseCase編號_UseCase中文名稱
	 * @param excelTemplateFile excel模版檔
	 * @param startDataRow 設定每一個sheet資料開始寫入的row number, excel的第一個row為0.
	 * @param headMap 設定每一個sheet的head, 所需替換的key/value.
	 * @param functionType 製表查詢的類型, 如新增流程的預覽, 資料維護的製表, 或產出資料檔等
	 * @return 回傳結果, ResultRMIVO的設定值如下:<br/>
	 * 成功: status = 0, result = 傳址的url<br/>
	 * 失敗: status = -1, msgDesc = 訊息碼, message = 訊息內容
	 */
	String reportProcess(Map<String, ?> params, String reportFilePrefix, String excelTemplateFile, int[] startDataRow, Map<?,?>[] headMap, int functionType);
}
